package com.eastfair.certificate.dto;

import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.eastfair.core.base.entity.Entity;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import lombok.Data;
import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.ToString;
import lombok.experimental.Accessors;
import com.eastfair.certificate.enumeration.CertificateUserDataResourceEnum;
import com.eastfair.certificate.enumeration.CertificateUserCertificateStatusEnum;
import com.eastfair.certificate.enumeration.CertificateUserFirstAuthStatusEnum;
import com.eastfair.certificate.enumeration.CertificateUserResourceTypeEnum;
import com.eastfair.certificate.enumeration.CertificateUserCertificateTypeEnum;
import com.eastfair.certificate.enumeration.CertificateUserSecondAuthStatusEnum;
import com.eastfair.certificate.enumeration.CertificateUserDrawTypeEnum;
import java.io.Serializable;

/**
 * <p>
 * 实体类
 * 用户填写的制证信息
 * </p>
 *
 * @author ligang
 * @since 2023-07-07
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = false)
@Builder
@ApiModel(value = "CertificateUserSaveDTO", description = "用户填写的制证信息")
public class CertificateUserSaveDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 证件id
     */
    @ApiModelProperty(value = "证件id")
    private Long certificateId;
    /**
     *  主体类型  主运，搭建商，参展商
     */
    @ApiModelProperty(value = " 主体类型  主运，搭建商，参展商")
    @Size(max = 255, message = " 主体类型  主运，搭建商，参展商长度不能超过255")
    private String principalType;
    /**
     * 展会id
     */
    @ApiModelProperty(value = "展会id")
    private Long exhibitionId;
    /**
     * 公司名称
     */
    @ApiModelProperty(value = "公司名称")
    @Size(max = 255, message = "公司名称长度不能超过255")
    private String companyName;
    /**
     * 公司id
     */
    @ApiModelProperty(value = "公司id")
    private Long companyId;
    /**
     * 身份证（正面）
     */
    @ApiModelProperty(value = "身份证（正面）")
    @Size(max = 255, message = "身份证（正面）长度不能超过255")
    private String cardFront;
    /**
     * 身份证（反面）
     */
    @ApiModelProperty(value = "身份证（反面）")
    @Size(max = 255, message = "身份证（反面）长度不能超过255")
    private String cardBack;
    /**
     * 身份证号码
     */
    @ApiModelProperty(value = "身份证号码")
    @Size(max = 255, message = "身份证号码长度不能超过255")
    private String cardNumber;
    /**
     * 姓名
     */
    @ApiModelProperty(value = "姓名")
    @Size(max = 255, message = "姓名长度不能超过255")
    private String fullName;
    /**
     * 性别
     */
    @ApiModelProperty(value = "性别")
    @Size(max = 255, message = "性别长度不能超过255")
    private String gender;
    /**
     * 货主手机号
     */
    @ApiModelProperty(value = "货主手机号")
    @Size(max = 255, message = "货主手机号长度不能超过255")
    private String cargoMobile;
    /**
     * 联系方式
     */
    @ApiModelProperty(value = "联系方式")
    @Size(max = 255, message = "联系方式长度不能超过255")
    private String contactInformation;
    /**
     * 展商id
     */
    @ApiModelProperty(value = "展商id")
    private Long exhibitorId;
    /**
     * 展商名称
     */
    @ApiModelProperty(value = "展商名称")
    @Size(max = 255, message = "展商名称长度不能超过255")
    private String exhibitorName;
    /**
     * 展位
     */
    @ApiModelProperty(value = "展位")
    @Size(max = 255, message = "展位长度不能超过255")
    private String booth;
    /**
     * 工作证件照
     */
    @ApiModelProperty(value = "工作证件照")
    @Size(max = 255, message = "工作证件照长度不能超过255")
    private String workCertificateImg;
    /**
     * 备注
     */
    @ApiModelProperty(value = "备注")
    @Size(max = 512, message = "备注长度不能超过512")
    private String remarks;
    /**
     * 车牌号
     */
    @ApiModelProperty(value = "车牌号")
    @Size(max = 255, message = "车牌号长度不能超过255")
    private String carNumber;
    /**
     * 车型
     */
    @ApiModelProperty(value = "车型")
    @Size(max = 255, message = "车型长度不能超过255")
    private String carType;
    /**
     * 车大小
     */
    @ApiModelProperty(value = "车大小")
    @Size(max = 255, message = "车大小长度不能超过255")
    private String carSize;
    /**
     * 车载货量
     */
    @ApiModelProperty(value = "车载货量")
    @Size(max = 255, message = "车载货量长度不能超过255")
    private String cargoCapacity;
    /**
     * 载货材质 搭建材料  展品
     */
    @ApiModelProperty(value = "载货材质 搭建材料  展品")
    @Size(max = 255, message = "载货材质 搭建材料  展品长度不能超过255")
    private String cargoMaterial;
    /**
     * 装卸方式 叉车 登高车 人工自卸
     */
    @ApiModelProperty(value = "装卸方式 叉车 登高车 人工自卸")
    @Size(max = 255, message = "装卸方式 叉车 登高车 人工自卸长度不能超过255")
    private String handlingMode;
    /**
     * 运输品种
     */
    @ApiModelProperty(value = "运输品种")
    @Size(max = 255, message = "运输品种长度不能超过255")
    private String transportVariety;
    /**
     * 工种高空作业证电工证其他
     */
    @ApiModelProperty(value = "工种高空作业证电工证其他")
    @Size(max = 255, message = "工种高空作业证电工证其他长度不能超过255")
    private String workType;
    /**
     * 申请证件类型  机力车正 货运车证
     */
    @ApiModelProperty(value = "申请证件类型  机力车正 货运车证")
    @Size(max = 255, message = "申请证件类型  机力车正 货运车证长度不能超过255")
    private String documentType;
    /**
     * 证件种类  ARRANGE:布展证;MOVEOUT:撤展证;
     */
    @ApiModelProperty(value = "证件种类  ARRANGE:布展证;MOVEOUT:撤展证;")
    @Size(max = 255, message = "证件种类  ARRANGE:布展证;MOVEOUT:撤展证;长度不能超过255")
    private String certificateClassify;
    /**
     * 是否需要机力车
     */
    @ApiModelProperty(value = "是否需要机力车")
    private Integer isPower;
    /**
     * 装卸类型 叉车 登高车 吊车
     */
    @ApiModelProperty(value = "装卸类型 叉车 登高车 吊车")
    @Size(max = 255, message = "装卸类型 叉车 登高车 吊车长度不能超过255")
    private String powerClassify;
    /**
     * 展馆code
     */
    @ApiModelProperty(value = "展馆code")
    @Size(max = 255, message = "展馆code长度不能超过255")
    private String spaceCode;
    /**
     * 营业执照
     */
    @ApiModelProperty(value = "营业执照")
    @Size(max = 255, message = "营业执照长度不能超过255")
    private String businessLicense;
    /**
     * 驾驶证复印件
     */
    @ApiModelProperty(value = "驾驶证复印件")
    @Size(max = 255, message = "驾驶证复印件长度不能超过255")
    private String drivingLicense;
    /**
     * 信息统计表
     */
    @ApiModelProperty(value = "信息统计表")
    @Size(max = 255, message = "信息统计表长度不能超过255")
    private String informationStatistics;
    /**
     * 报告复印件
     */
    @ApiModelProperty(value = "报告复印件")
    @Size(max = 255, message = "报告复印件长度不能超过255")
    private String report;
    /**
     * 特种设备人员证
     */
    @ApiModelProperty(value = "特种设备人员证")
    @Size(max = 255, message = "特种设备人员证长度不能超过255")
    private String specialCertificate;
    /**
     * 特种车辆证
     */
    @ApiModelProperty(value = "特种车辆证")
    @Size(max = 255, message = "特种车辆证长度不能超过255")
    private String specialVehicleCertificate;
    /**
     * 车辆年检报告
     */
    @ApiModelProperty(value = "车辆年检报告")
    @Size(max = 255, message = "车辆年检报告长度不能超过255")
    private String yearlyInspection;
    /**
     * 是否删除：1是；0否
     */
    @ApiModelProperty(value = "是否删除：1是；0否")
    private Integer isDeleted;
    /**
     * 租户id
     */
    @ApiModelProperty(value = "租户id")
    private Long tenantId;
    /**
     * 项目id
     */
    @ApiModelProperty(value = "项目id")
    private Long projectId;
    /**
     * 团队id
     */
    @ApiModelProperty(value = "团队id")
    private Long teamId;
    /**
     * 子系统id
     */
    @ApiModelProperty(value = "子系统id")
    private Long subsystemId;
    /**
     * 是否可用，1是；0否
     */
    @ApiModelProperty(value = "是否可用，1是；0否")
    private Integer isEnabled;
    /**
     * 一次审核状态#{WAIT:等待审核;CHECK:审核中;CHECK_SUCC:审核成功;CHECK_FAIL:审核失败;}
     */
    @ApiModelProperty(value = "一次审核状态#{WAIT:等待审核;CHECK:审核中;CHECK_SUCC:审核成功;CHECK_FAIL:审核失败;}")
    private CertificateUserFirstAuthStatusEnum firstAuthStatus;
    /**
     * 一次审核说明
     */
    @ApiModelProperty(value = "一次审核说明")
    @Size(max = 255, message = "一次审核说明长度不能超过255")
    private String firstAuthText;
    /**
     * 一次审核ID
     */
    @ApiModelProperty(value = "一次审核ID")
    private Long firstAuthId;
    /**
     * 二次审核状态#{WAIT:等待审核;CHECK:审核中;CHECK_SUCC:审核成功;CHECK_FAIL:审核失败;}
     */
    @ApiModelProperty(value = "二次审核状态#{WAIT:等待审核;CHECK:审核中;CHECK_SUCC:审核成功;CHECK_FAIL:审核失败;}")
    private CertificateUserSecondAuthStatusEnum secondAuthStatus;
    /**
     * 二次审核说明
     */
    @ApiModelProperty(value = "二次审核说明")
    @Size(max = 255, message = "二次审核说明长度不能超过255")
    private String secondAuthText;
    /**
     * 二次审核ID
     */
    @ApiModelProperty(value = "二次审核ID")
    private Long secondAuthId;
    /**
     * 是否注销
     */
    @ApiModelProperty(value = "是否注销")
    private Integer isCancel;
    /**
     * 是否挂失
     */
    @ApiModelProperty(value = "是否挂失")
    private Integer isLoss;
    /**
     * 是否打印
     */
    @ApiModelProperty(value = "是否打印")
    private Integer isPrintTake;
    /**
     * 是否领取
     */
    @ApiModelProperty(value = "是否领取")
    private Integer isDraw;
    /**
     * 是否黑名单
     */
    @ApiModelProperty(value = "是否黑名单")
    private Integer isBlack;
    /**
     * 来源#{ONLINE:线上;SPOT:现场;}
     */
    @ApiModelProperty(value = "来源#{ONLINE:线上;SPOT:现场;}")
    private CertificateUserResourceTypeEnum resourceType;
    /**
     * 是否补证
     */
    @ApiModelProperty(value = "是否补证")
    private Integer isMake;
    /**
     * 是否支付
     */
    @ApiModelProperty(value = "是否支付")
    private Integer isPay;
    /**
     * 订单号
     */
    @ApiModelProperty(value = "订单号")
    @Size(max = 255, message = "订单号长度不能超过255")
    private String orderNumber;
    /**
     * 订单id
     */
    @ApiModelProperty(value = "订单id")
    private Long orderId;
    /**
     * 进入时间
     */
    @ApiModelProperty(value = "进入时间")
    private LocalDateTime comeInTime;
    /**
     * 证件类型:#{CAR:车证;PEOPLE:人证;POWER:机力车证;OTHER:其他证;}
     */
    @ApiModelProperty(value = "证件类型:#{CAR:车证;PEOPLE:人证;POWER:机力车证;OTHER:其他证;}")
    private CertificateUserCertificateTypeEnum certificateType;
    /**
     * 工作结束时间(闸机)
     */
    @ApiModelProperty(value = "工作结束时间(闸机)")
    private LocalDateTime workEndTime;
    /**
     * 证件状态:#{AUTH:待审核;CHECK_FAIL:审核失败;SUBMIT:待提交;PAY:待付款;NO_PRINT:待制证;PRINT:已制证;DRAW:已领取;END:结束;}
     */
    @ApiModelProperty(value = "证件状态:#{AUTH:待审核;CHECK_FAIL:审核失败;SUBMIT:待提交;PAY:待付款;NO_PRINT:待制证;PRINT:已制证;DRAW:已领取;END:结束;}")
    private CertificateUserCertificateStatusEnum certificateStatus;
    /**
     * 工作开始时间(闸机)
     */
    @ApiModelProperty(value = "工作开始时间(闸机)")
    private LocalDateTime workStartTime;
    /**
     * 预约进入时间开始
     */
    @ApiModelProperty(value = "预约进入时间开始")
    private LocalDateTime appointmentInStartTime;
    /**
     * 预约进入时间结束
     */
    @ApiModelProperty(value = "预约进入时间结束")
    private LocalDateTime appointmentInEndTime;
    /**
     * 是否特殊货物 0-否 1-是
     */
    @ApiModelProperty(value = "是否特殊货物 0-否 1-是")
    private Integer isSpecial;
    /**
     * 是否同步 1是 0否
     */
    @ApiModelProperty(value = "是否同步 1是 0否")
    private Integer isSycn;
    /**
     * 车轴数
     */
    @ApiModelProperty(value = "车轴数")
    @Size(max = 255, message = "车轴数长度不能超过255")
    private String axleCount;
    /**
     * 数据来源:#{CENTIFICATE:制证;E:E展览;}
     */
    @ApiModelProperty(value = "数据来源:#{CENTIFICATE:制证;E:E展览;}")
    private CertificateUserDataResourceEnum dataResource;
    /**
     * 展览唯一标识
     */
    @ApiModelProperty(value = "展览唯一标识")
    @Size(max = 255, message = "展览唯一标识长度不能超过255")
    private String eUuid;
    /**
     * 展览数据
     */
    @ApiModelProperty(value = "展览数据")
    @Size(max = 1255, message = "展览数据长度不能超过1255")
    private String eDataJson;
    /**
     * 领取人手机号
     */
    @ApiModelProperty(value = "领取人手机号")
    @Size(max = 255, message = "领取人手机号长度不能超过255")
    private String drawMobile;
    /**
     * 领取人姓名
     */
    @ApiModelProperty(value = "领取人姓名")
    @Size(max = 255, message = "领取人姓名长度不能超过255")
    private String drawName;
    /**
     * 领取人身份证号
     */
    @ApiModelProperty(value = "领取人身份证号")
    @Size(max = 255, message = "领取人身份证号长度不能超过255")
    private String drawIdcard;
    /**
     * 领取单号
     */
    @ApiModelProperty(value = "领取单号")
    @Size(max = 255, message = "领取单号长度不能超过255")
    private String drawNumber;
    /**
     * 领取方式:#{MAKE:预约领取;SITE:现场领取;}

     */
    @ApiModelProperty(value = "领取方式:#{MAKE:预约领取;SITE:现场领取;}")
    private CertificateUserDrawTypeEnum drawType;
    /**
     * 领取时间

     */
    @ApiModelProperty(value = "领取时间 ")
    private LocalDateTime drawTime;
    /**
     * 领取预约时间
     */
    @ApiModelProperty(value = "领取预约时间")
    private LocalDateTime drawMakeTime;

}
